# Environment variables

<InfoBox>

To see a complete list of environment variables for a specific data source,
please check the relevant page on [Connecting to Data Sources][ref-config-db].

</InfoBox>

## `CUBEJS_API_SECRET`

The secret key used to sign and verify JWTs. Generated on project scaffold with
`npx cubejs-cli create`.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid string  | N/A                    | N/A                   |

See also the [`check_auth` configuration
option](/product/configuration/reference/config#check_auth).

## `CUBEJS_APP`

An application ID used to uniquely identify the Cube deployment. Can be
different for multitenant setups.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid string  | `cubejs`               | `cubejs`              |

## `CUBEJS_AWS_KEY`

The AWS Access Key ID to use for database connections.

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A valid AWS Access Key ID | N/A                    | N/A                   |

## `CUBEJS_AWS_SECRET`

The AWS Secret Access Key to use for database connections.

| Possible Values               | Default in Development | Default in Production |
| ----------------------------- | ---------------------- | --------------------- |
| A valid AWS Secret Access Key | N/A                    | N/A                   |

## `CUBEJS_AWS_REGION`

The AWS region to use for database connections.

| Possible Values                        | Default in Development | Default in Production |
| -------------------------------------- | ---------------------- | --------------------- |
| [A valid AWS region][aws-docs-regions] | N/A                    | N/A                   |

## `CUBEJS_AWS_S3_OUTPUT_LOCATION`

The S3 path to store [AWS Athena][aws-athena] query results made by Cube.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid S3 path | N/A                    | N/A                   |

## `CUBEJS_AWS_ATHENA_WORKGROUP`

The name of the [AWS Athena workgroup][aws-athena-workgroup] in which the query
is being started.

| Possible Values                                  | Default in Development | Default in Production |
| ------------------------------------------------ | ---------------------- | --------------------- |
| [A valid Athena Workgroup][aws-athena-workgroup] | N/A                    | N/A                   |

## `CUBEJS_AWS_ATHENA_CATALOG`

The name of the AWS Athena catalog to use for queries.

| Possible Values                                   | Default in Development | Default in Production |
| ------------------------------------------------- | ---------------------- | --------------------- |
| [A valid Athena Catalog name][aws-athena-catalog] | N/A                    | N/A                   |

## `CUBEJS_DB_SCHEMA`

The name of the schema to use as `information_schema` filter. Reduces count of
tables loaded during data model generation.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid schema name | N/A                    | N/A                   |

## `CUBEJS_CACHE_AND_QUEUE_DRIVER`

The cache and queue driver to use for the Cube deployment.

| Possible Values       | Default in Development | Default in Production |
| --------------------- | ---------------------- | --------------------- |
| `cubestore`, `memory` | `memory`               | `cubestore`           |

It can be also set using the [`cache_and_queue_driver` configuration
option](/product/configuration/reference/config#cache_and_queue_driver).

## `CUBEJS_CONCURRENCY`

The number of concurrent connections each query queue has to the database.

| Possible Values | Default in Development                      | Default in Production                       |
| --------------- | ------------------------------------------- | ------------------------------------------- |
| A valid number  | [See database-specific page][ref-config-db] | [See database-specific page][ref-config-db] |

It can be also set as `concurrency` in the [`orchestrator_options` configuration
option](/product/configuration/reference/config#orchestrator_options).

If you'd like to adjust the concurrency for the refresh worker, use
`CUBEJS_REFRESH_WORKER_CONCURRENCY`.

## `CUBEJS_REFRESH_WORKER_CONCURRENCY`

The number of concurrent connections each query queue of the refresh worker
has to the database.

| Possible Values | Default in Development       | Default in Production        |
| --------------- | ---------------------------- | ---------------------------- |
| A valid number  | Same as `CUBEJS_CONCURRENCY` | Same as `CUBEJS_CONCURRENCY` |

## `CUBEJS_SCHEDULED_REFRESH_QUERIES_PER_APP_ID`

How many pre-aggregations the refresh worker will build in parallel for each
application id as determined by the [`context_to_app_id`][ref-context-to-app-id]
configuration option.

Note that this parameter doesn't override the overall refresh worker concurrency,
configured via the `CUBEJS_REFRESH_WORKER_CONCURRENCY` environment variable, and
it should be adjusted accordingly.

| Possible Values                      | Default in Development | Default in Production |
| ------------------------------------ | ---------------------- | --------------------- |
| A valid number of concurrent queries | 10                     | 10                    |

<InfoBox>

Previously, this environment variable was named `CUBEJS_SCHEDULED_REFRESH_CONCURRENCY`.

</InfoBox>

## `CUBEJS_CUBESTORE_HOST`

The hostname of the Cube Store deployment

| Possible Values  | Default in Development | Default in Production |
| ---------------- | ---------------------- | --------------------- |
| A valid hostname | `localhost`            | N/A                   |

## `CUBEJS_CUBESTORE_PORT`

The port of the Cube Store deployment.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid port number | `3030`                 | `3030`                |

## `CUBEJS_DATASOURCES`

A comma-separated list of data source names. Data sources defined here can be
used to [decorate `CUBEJS_DB_*`][ref-config-multiple-ds-decorating-env]
environment variables.

| Possible Values                   | Default in Development | Default in Production |
| --------------------------------- | ---------------------- | --------------------- |
| A comma-separated list of strings | N/A                    | N/A                   |

```dotenv
CUBEJS_DATASOURCES=default,datasource1
```

## `CUBEJS_DB_BQ_CREDENTIALS`

A Base64 encoded JSON key file for connecting to Google BigQuery.

| Possible Values                                                  | Default in Development | Default in Production |
| ---------------------------------------------------------------- | ---------------------- | --------------------- |
| A valid Google BigQuery JSON key file encoded as a Base64 string | N/A                    | N/A                   |

## `CUBEJS_DB_BQ_KEY_FILE`

The path to a JSON key file for connecting to Google BigQuery.

| Possible Values                       | Default in Development | Default in Production |
| ------------------------------------- | ---------------------- | --------------------- |
| A valid Google BigQuery JSON key file | N/A                    | N/A                   |

## `CUBEJS_DB_BQ_LOCATION`

The Google BigQuery dataset location to connect to. Required if used with
pre-aggregations outside of US. If not set then BQ driver will fail with
`Dataset was not found in location US` error.

| Possible Values                                                         | Default in Development | Default in Production |
| ----------------------------------------------------------------------- | ---------------------- | --------------------- |
| [A valid Google BigQuery regional location][bq-docs-regional-locations] | N/A                    | N/A                   |

## `CUBEJS_DB_BQ_PROJECT_ID`

The Google BigQuery project ID to connect to.

| Possible Values                    | Default in Development | Default in Production |
| ---------------------------------- | ---------------------- | --------------------- |
| A valid Google BigQuery Project ID | N/A                    | N/A                   |

## `CUBEJS_DB_CLICKHOUSE_READONLY`

Whether the ClickHouse user has read-only access or not.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | N/A                    | N/A                   |

## `CUBEJS_DB_CLICKHOUSE_COMPRESSION`

Whether the ClickHouse client has compression enabled or not.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `false`                | `false`               |

## `CUBEJS_DB_DATABRICKS_ACCEPT_POLICY`

To accept the license terms for the Databricks JDBC driver, this must be set to
`true`.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | N/A                    | N/A                   |

## `CUBEJS_DB_DATABRICKS_CATALOG`

The name of the [Databricks catalog][databricks-catalog] to connect to.

| Possible Values                 | Default in Development | Default in Production |
| ------------------------------- | ---------------------- | --------------------- |
| A valid Databricks catalog name | N/A                    | N/A                   |

[databricks-catalog]: (https://docs.databricks.com/en/data-governance/unity-catalog/create-catalogs.html)

## `CUBEJS_DB_DATABRICKS_OAUTH_CLIENT_ID`

The OAuth client ID for [service principal][ref-databricks-m2m-oauth] authentication in Databricks.

| Possible Values        | Default in Development | Default in Production |
| ---------------------- | ---------------------- | --------------------- |
| A valid client ID      | N/A                    | N/A                   |

## `CUBEJS_DB_DATABRICKS_OAUTH_CLIENT_SECRET`

The OAuth client secret for [service principal][ref-databricks-m2m-oauth] authentication in Databricks.

| Possible Values        | Default in Development | Default in Production |
| ---------------------- | ---------------------- | --------------------- |
| A valid client secret  | N/A                    | N/A                   |

## `CUBEJS_DB_DATABRICKS_TOKEN`

The [personal access token][databricks-docs-pat] used to authenticate the
Databricks connection.

| Possible Values                 | Default in Development | Default in Production |
| ------------------------------- | ---------------------- | --------------------- |
| A valid Databricks access token | N/A                    | N/A                   |

## `CUBEJS_DB_DATABRICKS_URL`

The URL for a JDBC connection.

| Possible Values  | Default in Development | Default in Production |
| ---------------- | ---------------------- | --------------------- |
| A valid JDBC URL | N/A                    | N/A                   |

## `CUBEJS_DB_DOMAIN`

A domain name within an MS SQL database to connect to.

| Possible Values                              | Default in Development | Default in Production |
| -------------------------------------------- | ---------------------- | --------------------- |
| A valid domain name within a MS SQL database | N/A                    | N/A                   |

## `CUBEJS_DB_DUCKDB_MEMORY_LIMIT`

The [maximum memory limit][duckdb-docs-config] for DuckDB. Equivalent to
`SET memory_limit=<MEMORY_LIMIT>`.

| Possible Values                  | Default in Development | Default in Production |
| -------------------------------- | ---------------------- | --------------------- |
| A valid MotherDuck service token | 75% of available RAM   | 75% of available RAM  |

[duckdb-docs-config]: https://duckdb.org/docs/sql/configuration.html

## `CUBEJS_DB_DUCKDB_SCHEMA`

The [default search schema][duckdb-docs-config] for DuckDB.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid schema name | `main`                 | `main`                |

## `CUBEJS_DB_DUCKDB_MOTHERDUCK_TOKEN`

The [service token][motherduck-docs-svc-token] to use for connections to
MotherDuck.

| Possible Values                  | Default in Development | Default in Production |
| -------------------------------- | ---------------------- | --------------------- |
| A valid MotherDuck service token | N/A                    | N/A                   |

## `CUBEJS_DB_DUCKDB_DATABASE_PATH`

The database filepath to use for connection to a local database.

| Possible Values                   | Default in Development | Default in Production |
| --------------------------------- | ---------------------- | --------------------- |
| A valid duckdb database file path | N/A                    | N/A                   |

## `CUBEJS_DB_DUCKDB_S3_ACCESS_KEY_ID`

The AWS Access Key ID to use for S3 connections.

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A valid AWS Access Key ID | N/A                    | N/A                   |

## `CUBEJS_DB_DUCKDB_S3_SECRET_ACCESS_KEY`

The AWS Secret Access Key to use for S3 connections.

| Possible Values               | Default in Development | Default in Production |
| ----------------------------- | ---------------------- | --------------------- |
| A valid AWS Secret Access Key | N/A                    | N/A                   |

## `CUBEJS_DB_DUCKDB_S3_ENDPOINT`

The AWS endpoint to use for S3 connections.

| Possible Values                                   | Default in Development | Default in Production |
| ------------------------------------------------- | ---------------------- | --------------------- |
| [A valid AWS S3 endpoint][aws-docs-vpc-endpoints] | N/A                    | N/A                   |

[aws-docs-vpc-endpoints]:
  https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html

## `CUBEJS_DB_DUCKDB_S3_REGION`

The AWS region to use for S3 connections.

| Possible Values                        | Default in Development | Default in Production |
| -------------------------------------- | ---------------------- | --------------------- |
| [A valid AWS region][aws-docs-regions] | N/A                    | N/A                   |

## `CUBEJS_DB_DUCKDB_S3_USE_SSL`

Use SSL when connecting to S3.

| Possible Values                        | Default in Development | Default in Production |
| -------------------------------------- | ---------------------- | --------------------- |
| True or false                          | N/A                    | N/A                   |

## `CUBEJS_DB_DUCKDB_S3_URL_STYLE`

The URL style to be used by S3.

| Possible Values                        | Default in Development | Default in Production |
| -------------------------------------- | ---------------------- | --------------------- |
| [vhost/path]                           | N/A                    | N/A                   |

## `CUBEJS_DB_DUCKDB_S3_SESSION_TOKEN`

The S3 session token.

| Possible Values                        | Default in Development | Default in Production |
| -------------------------------------- | ---------------------- | --------------------- |
| A valid S3 session token               | N/A                    | N/A                   |

## `CUBEJS_DB_DUCKDB_EXTENSIONS`

A comma-separated list of DuckDB extensions	to install and load.

| Possible Values                             | Default in Development | Default in Production |
| ------------------------------------------- | ---------------------- | --------------------- |
| A comma-separated list of DuckDB extensions | N/A                    | N/A                   |

## `CUBEJS_DB_DUCKDB_COMMUNITY_EXTENSIONS`

A comma-separated list of DuckDB community extensions	to install and load.

| Possible Values                                       | Default in Development | Default in Production |
| ----------------------------------------------------- | ---------------------- | --------------------- |
| A comma-separated list of DuckDB community extensions | N/A                    | N/A                   |

## `CUBEJS_DB_DUCKDB_S3_USE_CREDENTIAL_CHAIN`

A flag to use credentials chain for secrets for S3 connections.

| Possible Values                                       | Default in Development | Default in Production |
| ----------------------------------------------------- | ---------------------- | --------------------- |
| `true`, `false`                                       | `false`                | `false`               |

## `CUBEJS_DB_ELASTIC_APIKEY_ID`

The [ID of the API key from elastic.co][elastic-docs-api-keys]. Required when
using Elastic Cloud.

| Possible Values               | Default in Development | Default in Production |
| ----------------------------- | ---------------------- | --------------------- |
| A valid Elastic.co API key ID | N/A                    | N/A                   |

## `CUBEJS_DB_ELASTIC_APIKEY_KEY`

The [API key from elastic.co][elastic-docs-api-keys]. Required when using
Elastic Cloud.

| Possible Values            | Default in Development | Default in Production |
| -------------------------- | ---------------------- | --------------------- |
| A valid Elastic.co API key | N/A                    | N/A                   |

## `CUBEJS_DB_ELASTIC_OPENDISTRO`

If `true`, then use the Open Distro for Elasticsearch.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | N/A                    | N/A                   |

## `CUBEJS_DB_ELASTIC_QUERY_FORMAT`

By default, queries return data in JDBC format, but you can also return data in
standard Elasticsearch JDBC, JSON, CSV, YAML or raw formats (only JSON and JDBC
are currently supported).

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `json`, `jdbc`  | N/A                    | N/A                   |

## `CUBEJS_DB_EXPORT_BUCKET`

The name of a bucket in cloud storage to store the database export snapshots.

<InfoBox>

When using multiple data sources, this environment variable can be [decorated
with a data source][ref-config-multiple-ds-decorating-env].

</InfoBox>

| Possible Values                                | Default in Development | Default in Production |
| ---------------------------------------------- | ---------------------- | --------------------- |
| A valid bucket in the configured cloud storage | N/A                    | N/A                   |

```dotenv
CUBEJS_DB_EXPORT_BUCKET=exports-20210505

# Decorated with a data source named `datasource1`
CUBEJS_DS_DATASOURCE1_DB_EXPORT_BUCKET=exports-20210505
```

## `CUBEJS_DB_EXPORT_BUCKET_TYPE`

The cloud provider where the bucket is hosted.

<InfoBox>

When using multiple data sources, this environment variable can be [decorated
with a data source][ref-config-multiple-ds-decorating-env].

</InfoBox>

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `gcp`, `s3`     | N/A                    | N/A                   |

```dotenv
CUBEJS_DB_EXPORT_BUCKET_TYPE=gcp

# Decorated with a data source named `datasource1`
CUBEJS_DS_DATASOURCE1_DB_EXPORT_BUCKET_TYPE=gcp
```

## `CUBEJS_DB_EXPORT_BUCKET_AWS_KEY`

The AWS Access Key ID to use for the export bucket.

<InfoBox>

When using multiple data sources, this environment variable can be [decorated
with a data source][ref-config-multiple-ds-decorating-env].

</InfoBox>

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A valid AWS Access Key ID | N/A                    | N/A                   |

## `CUBEJS_DB_EXPORT_BUCKET_AWS_SECRET`

The AWS Secret Access Key to use for the export bucket.

<InfoBox>

When using multiple data sources, this environment variable can be [decorated
with a data source][ref-config-multiple-ds-decorating-env].

</InfoBox>

| Possible Values               | Default in Development | Default in Production |
| ----------------------------- | ---------------------- | --------------------- |
| A valid AWS Secret Access Key | N/A                    | N/A                   |

## `CUBEJS_DB_EXPORT_BUCKET_AWS_REGION`

The AWS region of the export bucket.

<InfoBox>

When using multiple data sources, this environment variable can be [decorated
with a data source][ref-config-multiple-ds-decorating-env].

</InfoBox>

| Possible Values                        | Default in Development | Default in Production |
| -------------------------------------- | ---------------------- | --------------------- |
| [A valid AWS region][aws-docs-regions] | N/A                    | N/A                   |

## `CUBEJS_DB_EXPORT_BUCKET_AZURE_KEY`

The Azure Access Key to use for the export bucket.

<InfoBox>

When using multiple data sources, this environment variable can be [decorated
with a data source][ref-config-multiple-ds-decorating-env].

</InfoBox>

| Possible Values          | Default in Development | Default in Production |
| ------------------------ | ---------------------- | --------------------- |
| A valid Azure Access Key | N/A                    | N/A                   |

## `CUBEJS_DB_EXPORT_BUCKET_AZURE_TENANT_ID`

The Azure tenant ID to use for the export bucket.

<InfoBox>

When using multiple data sources, this environment variable can be [decorated
with a data source][ref-config-multiple-ds-decorating-env].

</InfoBox>

| Possible Values         | Default in Development | Default in Production |
| ----------------------- | ---------------------- | --------------------- |
| A valid Azure Tenant ID | N/A                    | N/A                   |

## `CUBEJS_DB_EXPORT_BUCKET_AZURE_CLIENT_ID`

The Azure client ID to use for the export bucket.

<InfoBox>

When using multiple data sources, this environment variable can be [decorated
with a data source][ref-config-multiple-ds-decorating-env].

</InfoBox>

| Possible Values         | Default in Development | Default in Production |
| ----------------------- | ---------------------- | --------------------- |
| A valid Azure Client ID | N/A                    | N/A                   |

## `CUBEJS_DB_EXPORT_BUCKET_AZURE_CLIENT_SECRET`

The Azure client secret to use for the export bucket.

<InfoBox>

When using multiple data sources, this environment variable can be [decorated
with a data source][ref-config-multiple-ds-decorating-env].

</InfoBox>

| Possible Values             | Default in Development | Default in Production |
| --------------------------- | ---------------------- | --------------------- |
| A valid Azure Client Secret | N/A                    | N/A                   |

## `CUBEJS_DB_EXPORT_BUCKET_MOUNT_DIR`

The mount path to use for a [Databricks DBFS mount][databricks-docs-dbfs].

| Possible Values    | Default in Development | Default in Production |
| ------------------ | ---------------------- | --------------------- |
| A valid mount path | N/A                    | N/A                   |

## `CUBEJS_DB_EXPORT_BUCKET_REDSHIFT_ARN`

An ARN of an AWS IAM role with permission to write to the configured bucket (see
`CUBEJS_DB_EXPORT_BUCKET`).

<InfoBox>

When using multiple data sources, this environment variable can be [decorated
with a data source][ref-config-multiple-ds-decorating-env].

</InfoBox>

| Possible Values                                                            | Default in Development | Default in Production |
| -------------------------------------------------------------------------- | ---------------------- | --------------------- |
| A valid ARN to an IAM Role associated with the target Redshift data source | N/A                    | N/A                   |

## `CUBEJS_DB_EXPORT_GCS_CREDENTIALS`

A Base64 encoded JSON key file for connecting to Google Cloud.

<InfoBox>

When using multiple data sources, this environment variable can be [decorated
with a data source][ref-config-multiple-ds-decorating-env].

</InfoBox>

| Possible Values                                               | Default in Development | Default in Production |
| ------------------------------------------------------------- | ---------------------- | --------------------- |
| A valid Google Cloud JSON key file encoded as a Base64 string | N/A                    | N/A                   |

## `CUBEJS_DB_EXPORT_INTEGRATION`

The name of the integration used in the database. Only required when using
Snowflake and Google Cloud Storage.

<InfoBox>

When using multiple data sources, this environment variable can be [decorated
with a data source][ref-config-multiple-ds-decorating-env].

</InfoBox>

| Possible Values                                                  | Default in Development | Default in Production |
| ---------------------------------------------------------------- | ---------------------- | --------------------- |
| A valid string matching the name of the integration in Snowflake | N/A                    | N/A                   |

## `CUBEJS_DB_HOST`

The host URL for a database.

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A valid database host URL | N/A                    | N/A                   |

## `CUBEJS_DB_SOCKET_PATH`

The path to a Unix socket that is used to connect to a data source, e.g.,
[MySQL](/product/configuration/data-sources/mysql#connecting-via-a-unix-socket).

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A valid path to a socket  | N/A                    | N/A                   |

## `CUBEJS_DB_MAX_POOL`

The maximum number of concurrent database connections to pool.

| Possible Values | Default in Development                      | Default in Production                       |
| --------------- | ------------------------------------------- | ------------------------------------------- |
| A valid number  | [See database-specific page][ref-config-db] | [See database-specific page][ref-config-db] |

## `CUBEJS_DB_NAME`

The name of the database to connect to.

| Possible Values       | Default in Development | Default in Production |
| --------------------- | ---------------------- | --------------------- |
| A valid database name | N/A                    | N/A                   |

## `CUBEJS_DB_PASS`

The password used to connect to the database.

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A valid database password | N/A                    | N/A                   |

## `CUBEJS_DB_PORT`

The port for the database connection.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid port number | N/A                    | N/A                   |

## `CUBEJS_DB_PRECISE_DECIMAL_IN_CUBESTORE`

If `true`, decimal columns maintain their precision and scale specifications (e.g.,
`decimal(10, 2)`) rather than being converted to a generic decimal type when data is
exported from a data source to Cube Store.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `false`                | `false`               |

## `CUBEJS_DB_PRESTO_CATALOG`

The catalog within Presto/Trino to connect to.

| Possible Values                                     | Default in Development | Default in Production |
| --------------------------------------------------- | ---------------------- | --------------------- |
| A valid catalog name within a Presto/Trino database | N/A                    | N/A                   |

## `CUBEJS_DB_PRESTO_AUTH_TOKEN`

The authentication token to use when connecting to Presto/Trino. It will be sent in the `Authorization` header.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid authentication token | N/A | N/A |

## `CUBEJS_DB_QUERY_TIMEOUT`

The timeout value for any queries made to the database by Cube.

| Possible Values                          | Default in Development | Default in Production |
| ---------------------------------------- | ---------------------- | --------------------- |
| A number in seconds or a duration string | `10m`                  | `10m`                 |

<InfoBox>

There's a hard limit of 20 minutes for queries that ingest data into Cube Store
when pre-aggregations are built. If you bump into this limit, consider using
an export bucket and splitting pre-aggregations into partitions.

</InfoBox>

## `CUBEJS_DB_FETCH_COLUMNS_BY_ORDINAL_POSITION`

Force fetching of columns by ordinal positions. Certain data-providers (e.g., Redshift) do not guarantee columns in the
same order on each request (e.g., `SELECT * FROM foo`). This flag ensures that columns will be fetched in proper order
for pre-aggregation generation.

| Possible Values                                    | Default in Development | Default in Production |
| -------------------------------------------------- | ---------------------- | --------------------- |
| Whether to force fetch columns in ordinal position | `true`                 | `true`               |

## `CUBEJS_DB_MATERIALIZE_CLUSTER`

The cluster name to use when connecting to [Materialize](/product/configuration/data-sources/materialize).

| Possible Values                                           | Default in Development | Default in Production |
| --------------------------------------------------------- | ---------------------- | --------------------- |
| A valid Materialize cluster name                          | N/A                    | N/A                   |

## `CUBEJS_DB_MYSQL_USE_NAMED_TIMEZONES`

This flag controls how time zones conversion is done in the generated SQL for MySQL:
- If it is set to `true`, time zone names are used. In this case, your MySQL server needs
to be [configured][mysql-server-tz-support] properly.
- If it is set to `false`, numeric offsets are used instead.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `false`                | `false`               |

## `CUBEJS_DB_SNOWFLAKE_ACCOUNT`

The Snowflake account identifier to use when connecting to the database.

| Possible Values                                           | Default in Development | Default in Production |
| --------------------------------------------------------- | ---------------------- | --------------------- |
| [A valid Snowflake account ID][snowflake-docs-account-id] | N/A                    | N/A                   |

## `CUBEJS_DB_SNOWFLAKE_AUTHENTICATOR`

The type of authenticator to use with Snowflake. Use `SNOWFLAKE` with
username/password, or `SNOWFLAKE_JWT` with key pairs.

| Possible Values              | Default in Development | Default in Production |
| ---------------------------- | ---------------------- | --------------------- |
| `SNOWFLAKE`, `SNOWFLAKE_JWT` | `SNOWFLAKE`            | `SNOWFLAKE`           |

## `CUBEJS_DB_SNOWFLAKE_OAUTH_TOKEN`

The OAuth token to use with Snowflake.

| Possible Values                | Default in Development | Default in Production |
| ------------------------------ | ---------------------- | --------------------- |
| A valid OAuth token            | N/A                    | N/A                   |

## `CUBEJS_DB_SNOWFLAKE_OAUTH_TOKEN_PATH`

The path to the file containing the OAuth token for Snowflake.

| Possible Values                | Default in Development | Default in Production |
| ------------------------------ | ---------------------- | --------------------- |
| A valid OAuth token            | N/A                    | N/A                   |

## `CUBEJS_DB_SNOWFLAKE_CLIENT_SESSION_KEEP_ALIVE`

If `true`, [keep the Snowflake connection alive
indefinitely][snowflake-docs-connection-options].

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `true`                 | `true`                |

## `CUBEJS_DB_SNOWFLAKE_PRIVATE_KEY`

The content of the private RSA key (encrypted or not).

| Possible Values                | Default in Development | Default in Production |
| ------------------------------ | ---------------------- | --------------------- |
| Content of the private RSA key | N/A                    | N/A                   |

## `CUBEJS_DB_SNOWFLAKE_PRIVATE_KEY_PASS`

The password for the private RSA key. Only required for encrypted keys.

| Possible Values                                    | Default in Development | Default in Production |
| -------------------------------------------------- | ---------------------- | --------------------- |
| A valid password for the encrypted private RSA key | N/A                    | N/A                   |

## `CUBEJS_DB_SNOWFLAKE_PRIVATE_KEY_PATH`

The path to the private RSA key folder.

| Possible Values                     | Default in Development | Default in Production |
| ----------------------------------- | ---------------------- | --------------------- |
| A valid path to the private RSA key | N/A                    | N/A                   |

## `CUBEJS_DB_SNOWFLAKE_REGION`

The Snowflake region to use when connecting to the database.

| Possible Values                                    | Default in Development | Default in Production |
| -------------------------------------------------- | ---------------------- | --------------------- |
| [A valid Snowflake region][snowflake-docs-regions] | N/A                    | N/A                   |

## `CUBEJS_DB_SNOWFLAKE_ROLE`

The Snowflake role to use when connecting to the database.

| Possible Values                                               | Default in Development | Default in Production |
| ------------------------------------------------------------- | ---------------------- | --------------------- |
| [A valid Snowflake role][snowflake-docs-roles] in the account | N/A                    | N/A                   |

## `CUBEJS_DB_SNOWFLAKE_WAREHOUSE`

The Snowflake warehouse to use when connecting to the database.

| Possible Values                                                        | Default in Development | Default in Production |
| ---------------------------------------------------------------------- | ---------------------- | --------------------- |
| [A valid Snowflake warehouse][snowflake-docs-warehouse] in the account | N/A                    | N/A                   |

## `CUBEJS_DB_PINOT_NULL_HANDLING`

The Startree/Pinot null value support. If `true`, enables null handling.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` |	`false`                | `false`               |

## `CUBEJS_DB_PINOT_AUTH_TOKEN`

The authentication token for StarTree to be passed as HTTP headers.

| Possible Values                     | Default in Development | Default in Production |
| ----------------------------------- | ---------------------- | --------------------- |
| A valid string containing the token |	N/A                    | N/A                   |

## `CUBEJS_DB_SSL`

If `true`, enables SSL encryption for database connections from Cube.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | N/A                    | N/A                   |

## `CUBEJS_DB_TYPE`

A database from the list of [supported databases][ref-config-db].

| Possible Values                                       | Default in Development | Default in Production |
| ----------------------------------------------------- | ---------------------- | --------------------- |
| [Any valid database supported by Cube][ref-config-db] | N/A                    | N/A                   |

## `CUBEJS_DB_URL`

The URL for a database.

| Possible Values      | Default in Development | Default in Production |
| -------------------- | ---------------------- | --------------------- |
| A valid database URL | N/A                    | N/A                   |

## `CUBEJS_DB_USER`

The username used to connect to the database.

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A valid database username | N/A                    | N/A                   |

## `CUBEJS_DB_QUERY_DEFAULT_LIMIT`

The default [row limit][ref-row-limit] in the result set if it's not explicitly
specified in an API query.

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A positive integer number | `10000`                | `10000`               |

## `CUBEJS_DB_QUERY_LIMIT`

The maximum [row limit][ref-row-limit] in the result set.

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A positive integer number | `50000`                | `50000`               |

<WarningBox>

Increasing the maximum row limit may cause out-of-memory (OOM) crashes and make
Cube susceptible to denial-of-service (DoS) attacks if it's exposed to
untrusted environments.

</WarningBox>

## `CUBEJS_DEFAULT_TIMEZONE`

The default [time zone][ref-time-zone] for queries.

| Possible Values        | Default in Development | Default in Production |
| ---------------------- | ---------------------- | --------------------- |
| A valid time zone name | `UTC`                  | `UTC`                 |

You can set the time zone name in the [TZ Database Name][link-tzdb] format, e.g.,
`America/Los_Angeles`.

<WarningBox>

Increasing the maximum row limit may cause out-of-memory (OOM) crashes and make
Cube susceptible to denial-of-service (DoS) attacks if it's exposed to
untrusted environments.

</WarningBox>

## `CUBEJS_DEFAULT_API_SCOPES`

[API scopes][ref-rest-scopes] used to allow or disallow access to REST API
endpoints.

| Possible Values                                                                | Default in Development | Default in Production |
| ------------------------------------------------------------------------------ | ---------------------- | --------------------- |
| A comma-delimited string with any combination of [API scopes][ref-rest-scopes] | `meta,data,graphql,sql`| `meta,data,graphql,sql`|

See also the [`context_to_api_scopes` configuration
option](/product/configuration/reference/config#context_to_api_scopes).

## `CUBEJS_DEV_MODE`

If `true`, enables [development mode](/product/configuration#development-mode).

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `true`                 | `false`               |

## `CUBEJS_DROP_PRE_AGG_WITHOUT_TOUCH`

If `true`, it enables dropping pre-aggregations that Refresh Worker doesn't
touch within `CUBEJS_TOUCH_PRE_AGG_TIMEOUT`.
Pre-aggregations are touched whenever they are rebuilt or a Refresh Worker
checks its freshness. The first drop will be initiated when the Refresh Worker
is able to check freshness for every `scheduledRefresh: true` pre-aggregation.
If you have multiple Refresh Workers with different data model versions sharing
the same Cube Store cluster, then touches from both refresh workers are
respected.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `true`                 | `true`                |

## `CUBEJS_FIREBOLT_ACCOUNT`

The [Firebolt account name][firebolt-docs-account-name].

| Possible Values                                             | Default in Development | Default in Production |
| ----------------------------------------------------------- | ---------------------- | --------------------- |
| A valid [Firebolt account name][firebolt-docs-account-name] | N/A                    | N/A                   |

## `CUBEJS_FIREBOLT_API_ENDPOINT`

The Firebolt API endpoint. Used for authentication.

| Possible Values                                                         | Default in Development | Default in Production |
| ----------------------------------------------------------------------- | ---------------------- | --------------------- |
| `api.dev.firebolt.io`, `api.staging.firebolt.io`, `api.app.firebolt.io` | N/A                    | N/A                   |

## `CUBEJS_FIREBOLT_ENGINE_NAME`

The [name of the Firebolt engine][firebolt-docs-engine-name] to connect to.

| Possible Values                                           | Default in Development | Default in Production |
| --------------------------------------------------------- | ---------------------- | --------------------- |
| A valid [Firebolt engine name][firebolt-docs-engine-name] | N/A                    | N/A                   |

## `CUBEJS_GH_API_TOKEN`

A [GitHub Personal Access Token][gh-docs-pat] to avoid API rate limiting when
downloading Cube Store.

| Possible Values    | Default in Development | Default in Production |
| ------------------ | ---------------------- | --------------------- |
| A valid GitHub PAT | `false`                | `false`               |

## `CUBEJS_JWK_URL`

Enables [JSON Web Key (JWK)][ietf-jwk-ref]-based authentication in Cube.

| Possible Values                   | Default in Development | Default in Production |
| --------------------------------- | ---------------------- | --------------------- |
| A valid URL to a JSON Web Key Set | N/A                    | N/A                   |

It can be also set as `jwkUrl` in the [`jwt` configuration
option](/product/configuration/reference/config#jwt).

## `CUBEJS_JWT_ALGS`

[Any supported algorithm for decoding JWTs][gh-jsonwebtoken-algs].

| Possible Values  | Default in Development | Default in Production |
| ---------------- | ---------------------- | --------------------- |
| `HS256`, `RS256` | N/A                    | N/A                   |

It can be also set as `algorithms` in the [`jwt` configuration
option](/product/configuration/reference/config#jwt).

## `CUBEJS_JWT_AUDIENCE`

An audience value which will be used to enforce the [`aud` claim from inbound
JWTs][ietf-jwt-ref-aud].

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid `aud` claim | N/A                    | N/A                   |

It can be also set as `audience` in the [`jwt` configuration
option](/product/configuration/reference/config#jwt).

## `CUBEJS_JWT_CLAIMS_NAMESPACE`

A namespace within the decoded JWT under which any custom claims can be found.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid string  | N/A                    | N/A                   |

It can be also set as `claimsNamespace` in the [`jwt` configuration
option](/product/configuration/reference/config#jwt).

## `CUBEJS_JWT_ISSUER`

An issuer value which will be used to enforce the [`iss` claim from inbound
JWTs][ietf-jwt-ref-iss].

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid `iss` claim | N/A                    | N/A                   |

It can be also set as `issuer` in the [`jwt` configuration
option](/product/configuration/reference/config#jwt).

## `CUBEJS_JWT_KEY`

The secret key used to sign and verify JWTs. Similar to
`CUBEJS_API_SECRET`.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid string  | N/A                    | N/A                   |

It can be also set as `key` in the [`jwt` configuration
option](/product/configuration/reference/config#jwt).

## `CUBEJS_JWT_SUBJECT`

A subject value which will be used to enforce the [`sub` claim from inbound
JWTs][ietf-jwt-ref-sub].

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid `sub` claim | N/A                    | N/A                   |

It can be also set as `subject` in the [`jwt` configuration
option](/product/configuration/reference/config#jwt).

## `CUBEJS_LOG_LEVEL`

The logging level for Cube.

| Possible Values                  | Default in Development | Default in Production |
| -------------------------------- | ---------------------- | --------------------- |
| `error`, `info`, `trace`, `warn` | `warn`                 | `warn`                |

See also `CUBESTORE_LOG_LEVEL`.
See also the [`logger` configuration option](/product/configuration/reference/config#logger).

## `CUBEJS_MAX_PARTITIONS_PER_CUBE`

The maximum number of partitions each pre-aggregation in a cube can use.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid number  | `10000`                | `10000`               |

## `CUBEJS_PG_SQL_PORT`

The port used by the [SQL API][ref-sql-api] to listen to Postgres-compatible
connections on.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid port number | N/A                    | N/A                   |

## `CUBEJS_PRE_AGGREGATIONS_BUILDER`

If `true`, this instance of Cube will build pre-aggregations, even if it is an
API instance.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `true`                 | `false`               |

<InfoBox>

If Cube is configured to act as a refresh worker instance using `CUBEJS_REFRESH_WORKER`,
then `CUBEJS_PRE_AGGREGATIONS_BUILDER` will be `true`.

</InfoBox>

## `CUBEJS_PRE_AGGREGATIONS_SCHEMA`

The [database schema name](/product/configuration/reference/config#pre_aggregations_schema)
to use for storing pre-aggregations.

| Possible Values | Default in Development | Default in Production   |
| --------------- | ---------------------- | ----------------------- |
| A valid string  | `dev_pre_aggregations` | `prod_pre_aggregations` |

It can be also set using the [`pre_aggregations_schema` configuration
option](/product/configuration/reference/config#pre_aggregations_schema).

<InfoBox>

In Cube Cloud, all [environments][ref-environments] share the same pre-aggregations schema name by default.
This allows reusing pre-aggregations across environments, saving both time and cost.

</InfoBox>

## `CUBEJS_PRE_AGGREGATIONS_ALLOW_NON_STRICT_DATE_RANGE_MATCH`

If `true`, allows non-strict date range matching for pre-aggregations by default.
This can be overridden for individual pre-aggregations using the
[`allow_non_strict_date_range_match`][ref-schema-ref-preagg-allownonstrict] parameter.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `true`                | `true`                |

## `CUBEJS_REFRESH_WORKER`

If `true`, this instance of Cube will **only** refresh pre-aggregations.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `false`                | `false`               |

## `CUBEJS_ROLLUP_ONLY`

If `true`, the API instance of Cube will **only** fulfill queries from
pre-aggregations. See [rollup-only
mode](/product/caching/using-pre-aggregations#rollup-only-mode) for details.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `false`                | `false`               |

It can be also set using the [`orchestrator_options.rollupOnlyMode` configuration
option](/product/configuration/reference/config#orchestrator_options).

## `CUBEJS_SCHEDULED_REFRESH_TIMEZONES`

A comma-separated [list of timezones to schedule refreshes
for][ref-config-sched-refresh-timer].

| Possible Values                                           | Default in Development | Default in Production |
| --------------------------------------------------------- | ---------------------- | --------------------- |
| [A valid timezone from the tz database][wiki-tz-database] | N/A                    | N/A                   |

It can be also set using the [`scheduled_refresh_time_zones` configuration
option](/product/configuration/reference/config#scheduled_refresh_time_zones).

## `CUBEJS_SCHEMA_PATH`

The path where Cube loads data models from.

| Possible Values                          | Default in Development | Default in Production |
| ---------------------------------------- | ---------------------- | --------------------- |
| A valid path containing Cube data models | `model`                | `model`               |

<InfoBox>

Until v0.35, the default value was `schema`.

</InfoBox>

It can be also set using the [`schema_path` configuration
option](/product/configuration/reference/config#schema_path).

## `CUBEJS_SERVER_HEADERS_TIMEOUT`

The number of milliseconds to limit the amount of time the parser will wait
to receive the complete HTTP headers.
If the timeout expires, the server responds with status 408 without
forwarding the request to the request listener and then closes the connection.

| Possible Values                           | Default in Development   | Default in Production    |
| ----------------------------------------- | ------------------------ | ------------------------ |
| A valid number or string representing one | NodeJS's version default | NodeJS's version default |

## `CUBEJS_SERVER_KEEP_ALIVE_TIMEOUT`

The number of milliseconds of inactivity a server needs to wait for additional incoming data,
after it has finished writing the last response, before a socket will be destroyed.

| Possible Values                           | Default in Development   | Default in Production    |
| ----------------------------------------- | ------------------------ | ------------------------ |
| A valid number or string representing one | NodeJS's version default | NodeJS's version default |

## `CUBEJS_SQL_USER`

A username required to access the [SQL API][ref-sql-api].

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid string  | N/A                    | N/A                   |

See also the [`check_sql_auth` configuration
option](/product/configuration/reference/config#check_sql_auth).

## `CUBEJS_SQL_PASSWORD`

A password required to access the [SQL API][ref-sql-api].

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid string  | N/A                    | N/A                   |

See also the [`check_sql_auth` configuration
option](/product/configuration/reference/config#check_sql_auth).

## `CUBEJS_SQL_SUPER_USER`

A name of specific user who will be allowed to change the user during the SQL API
session.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid string  | N/A                    | N/A                   |

See also the [`can_switch_sql_user` configuration
option](/product/configuration/reference/config#can_switch_sql_user).

## `CUBEJS_ALLOW_UNGROUPED_WITHOUT_PRIMARY_KEY`

If `true`, disables the primary key inclusion check for
[ungrouped queries](/product/apis-integrations/queries#ungrouped-query).

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `false`                | `false`               |

It can be also set using the [`allow_ungrouped_without_primary_key` configuration
option](/product/configuration/reference/config#allow_ungrouped_without_primary_key).

<InfoBox>

When query push-own in the SQL API is enabled via the `CUBESQL_SQL_PUSH_DOWN`
environment variable, this option is enabled as well for the best user experience.

</InfoBox>

## `CUBESQL_SQL_PUSH_DOWN`

If `true`, enables query pushdown in the [SQL API][ref-sql-api].

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `true`                | `true`               |

<InfoBox>

Query pushdown in the SQL API is available in public preview.
[Read more](https://cube.dev/blog/query-push-down-in-cubes-semantic-layer) in the blog.

</InfoBox>

## `CUBESQL_STREAM_MODE`

If `true`, enables the [streaming mode][ref-sql-api-streaming] in the [SQL API][ref-sql-api].

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `false`                | `false`               |

## `CUBESQL_SQL_NO_IMPLICIT_ORDER`

If `true`, prevents adding implicit [default `ORDER BY`
clause](/product/apis-integrations/queries#order) for [SQL API][ref-sql-api] queries.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `true`                 | `true`                |

## `CUBEJS_MAX_SESSIONS`

Specifies the maximum number of concurrent sessions (connections) to the
[SQL API][ref-sql-api] and safeguards your Cube deployment from out-of-memory
crashes when too many connections are attempted to be established.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid number  | 1024                   | 1024                  |

## `CUBESQL_REWRITE_MAX_NODES`

Specifies the maximum number of e-graph nodes that are allocated during
the creation of a query plan in the [SQL API][ref-sql-api].

Should be increased if you get the following error:
`Error during rewrite: Can't find rewrite due to 10002 AST node limit reached.`

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid number  | 10000                  | 10000                 |

## `CUBESQL_REWRITE_MAX_ITERATIONS`

Specifies the maximum number of e-graph term rewriting iterations that are performed
during the creation of a query plan in the [SQL API][ref-sql-api].

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid number  | 300                    | 300                   |

## `CUBESQL_REWRITE_TIMEOUT`

Specifies the maximum time, in seconds, that is allocated for
the creation of a query plan in the [SQL API][ref-sql-api].

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid number  | 30                     | 30                    |

## `CUBESQL_AUTH_EXPIRE_SECS`

Number of seconds before session's SQL API security context will be invalidated.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid integer number | `300`                 | `300`                |

## `CUBEJS_DAX_CREATE_DATE_HIERARCHIES`

If `true`, the DAX API will expose time dimensions as calendar hierarchies.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `true` | `true` |

## `CUBE_XMLA_LANGUAGE`

This variable is used to [configure the locale][ref-mdx-api-locale] for the [MDX API][ref-mdx-api].

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| Either a [LCID][link-lcid] (numeric) or a language tag (string) | `1033` (English - United States) | `1033` (English - United States) |

For example, to display currency values using the Netherlands locale (euro with comma as decimal separator), you can use either:

```bash
# LCID
CUBE_XMLA_LANGUAGE=1043

# Language tag
CUBE_XMLA_LANGUAGE=nl-NL
```

[link-lcid]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/70feba9f-294e-491e-b6eb-56532684c37f

## `CUBE_MDX_CREATE_DATE_HIERARCHIES`

If `true`, the [MDX API][ref-mdx-api] will automatically create additional hierarchies for all [time dimensions][ref-time-dimensions] and organize them in a separate "Calendar" folder for each dimension.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `true`                 | `true`                |

## `CUBEJS_NESTED_FOLDERS_DELIMITER`

Specifies the delimiter used to flatten the names of nested [folder][ref-folders] in
views when [visualization tools][ref-dataviz-tools] do not support nested folder
structures. When set, nested folders will be presented at the root level with path-like
names using the specified delimiter.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid string delimiter (e.g., ` / `) | N/A | N/A |

For example, if set to `/`, a nested folder structure like the `Customer Information`
folder with the `Personal Details` subfolder will be flattened to `Customer
Information / Personal Details` at the root level.

## `CUBEJS_TELEMETRY`

If `true`, then send telemetry to Cube.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `true`                 | `true`                |

## `CUBESTORE_METRICS_FORMAT`

Define which metrics collector format.

| Possible Values       | Default in Development | Default in Production |
| --------------------- | ---------------------- | --------------------- |
| `statsd`, `dogstatsd` | `statsd`               | `statsd`              |

## `CUBESTORE_METRICS_ADDRESS`

Required IP address to send metrics.

| Possible Values    | Default in Development | Default in Production |
| ------------------ | ---------------------- | --------------------- |
| A valid IP address | `127.0.0.1`            | `127.0.0.1`           |

## `CUBESTORE_METRICS_PORT`

Required port to send where collector server accept UDP connections.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid port number | `8125`                 | `8125`                |

## `CUBEJS_TOUCH_PRE_AGG_TIMEOUT`

<WarningBox>

If the refresh worker’s throughput isn’t sufficient and the Cube Refresh Worker can’t refresh every partition, Cube will start dropping partitions once the timeout is reached.
For externally refreshed pre-aggregations, make sure each pre-aggregation is refreshed at least once within the specified timeout period.

</WarningBox>

The number of seconds without a touch before pre-aggregation is considered
orphaned and marked for removal. Please see
`CUBEJS_DROP_PRE_AGG_WITHOUT_TOUCH` to
learn more.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid number  | 86400                  | 86400                 |

## `CUBEJS_WEB_SOCKETS`

If `true`, then use WebSocket for data fetching.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `true`                 | `true`                |

## `CUBEJS_TESSERACT_ORCHESTRATOR`

If `true`, enables performance optimizations in the query orchestrator,
such as deserializing Cube Store result sets in native Rust code.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `true`                 | `true`                |

## `CUBEJS_TESSERACT_SQL_PLANNER`

If `true`, enables Tesseract, the [next-generation data modeling engine][link-tesseract].
Tesseract powers [multi-stage calculations][ref-multi-stage-calculations].

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `false`                 | `false`                |

<WarningBox>

Tesseract is currently in preview.

</WarningBox>

## `CUBESTORE_AWS_ACCESS_KEY_ID`

The Access Key ID for AWS. Required when using AWS S3.

| Possible Values                             | Default in Development | Default in Production |
| ------------------------------------------- | ---------------------- | --------------------- |
| [A valid AWS Access Key ID][aws-docs-creds] | N/A                    | N/A                   |

## `CUBESTORE_AWS_SECRET_ACCESS_KEY`

The Secret Access Key for AWS. Required when using AWS S3.

| Possible Values                                 | Default in Development | Default in Production |
| ----------------------------------------------- | ---------------------- | --------------------- |
| [A valid AWS Secret Access Key][aws-docs-creds] | N/A                    | N/A                   |

## `CUBESTORE_AWS_CREDS_REFRESH_EVERY_MINS`

The number of minutes after which Cube Store should refresh AWS credentials.
Required when using an AWS instance role.

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A valid number in minutes | `180`                  | `180`                 |

## `CUBESTORE_BIND_ADDR`

The address/port pair for Cube Store's MySQL-compatible interface.

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A valid address/port pair | `0.0.0.0:3306`         | `0.0.0.0:3306`        |

## `CUBESTORE_DATA_DIR`

A path on the local filesystem to store a local replica of the data. Must be
unique on each node and different from `CUBESTORE_REMOTE_DIR`.

| Possible Values                                             | Default in Development | Default in Production |
| ----------------------------------------------------------- | ---------------------- | --------------------- |
| A valid path on the local filesystem with read/write access | `.cubestore/data`      | `.cubestore/data`     |

## `CUBESTORE_GCP_CREDENTIALS`

A Base64-encoded JSON key for connecting to Google Cloud. Required when
using Google Cloud Storage

| Possible Values                                                                 | Default in Development | Default in Production |
| ------------------------------------------------------------------------------- | ---------------------- | --------------------- |
| [A valid Google Cloud JSON key encoded as a Base64 string][gcp-docs-creds-json] | N/A                    | N/A                   |

## `CUBESTORE_GCP_KEY_FILE`

The path to a JSON key file for connecting to Google Cloud. Required when using
Google Cloud Storage.

| Possible Values                                           | Default in Development | Default in Production |
| --------------------------------------------------------- | ---------------------- | --------------------- |
| [A valid Google Cloud JSON key file][gcp-docs-creds-json] | N/A                    | N/A                   |

## `CUBESTORE_GCS_BUCKET`

The name of a bucket in GCS. Required when using GCS

| Possible Values                                 | Default in Development | Default in Production |
| ----------------------------------------------- | ---------------------- | --------------------- |
| A valid bucket name in the Google Cloud account | N/A                    | N/A                   |

## `CUBESTORE_GCS_SUB_PATH`

The path in a GCS bucket to store pre-aggregations. Optional

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid path prefix | N/A                    | N/A                   |

## `CUBESTORE_HTTP_BIND_ADDR`

The address/port pair for Cube Store's HTTP interface.

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A valid address/port pair | `0.0.0.0:3030`         | `0.0.0.0:3030`        |

## `CUBESTORE_HTTP_PORT`

The port for Cube Store to listen to HTTP connections on. Ignored when
`CUBESTORE_HTTP_BIND_ADDR` is set.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid port number | `3030`                 | `3030`                |

## `CUBESTORE_JOB_RUNNERS`

The number of parallel tasks that process non-interactive jobs like data
insertion, compaction etc.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid number  | `4`                    | `4`                   |

## `CUBESTORE_LOG_LEVEL`

The logging level for Cube Store.

| Possible Values                           | Default in Development | Default in Production |
| ----------------------------------------- | ---------------------- | --------------------- |
| `error`, `warn`, `info`, `debug`, `trace` | `error`                | `error`               |

See also `CUBEJS_LOG_LEVEL`.

## `CUBESTORE_META_ADDR`

The address/port pair for the Cube Store **router** node in the cluster.

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A valid address/port pair | N/A                    | N/A                   |

## `CUBESTORE_META_PORT`

The port for the Cube Store **router** node to listen for connections on.
Ignored when `CUBESTORE_META_ADDR` is set.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid port number | N/A                    | N/A                   |

## `CUBESTORE_MINIO_ACCESS_KEY_ID`

The Access Key ID for MinIO. Required when using MinIO.

| Possible Values             | Default in Development | Default in Production |
| --------------------------- | ---------------------- | --------------------- |
| A valid MinIO Access Key ID | N/A                    | N/A                   |

## `CUBESTORE_MINIO_BUCKET`

The name of the bucket that you want to use MinIO. Required when using MinIO.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid bucket name | N/A                    | N/A                   |

## `CUBESTORE_MINIO_SUB_PATH`

The name of sub path (folder) inside the bucket that you want to use. Required when using MinIO.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid sub path (folder) name | N/A                    | N/A                   |

## `CUBESTORE_MINIO_CREDS_REFRESH_EVERY_MINS`

The number of minutes after which Cube Store should refresh MinIO credentials.

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A valid number in minutes | `180`                  | `180`                 |

## `CUBESTORE_MINIO_REGION`

The region of a bucket in AWS. Optional when using MinIO.

| Possible Values                                        | Default in Development | Default in Production |
| ------------------------------------------------------ | ---------------------- | --------------------- |
| A valid S3 region name, an empty string if not present | N/A                    | N/A                   |

## `CUBESTORE_MINIO_SECRET_ACCESS_KEY`

The Secret Access Key for MinIO. Required when using MinIO.

| Possible Values                 | Default in Development | Default in Production |
| ------------------------------- | ---------------------- | --------------------- |
| A valid MinIO Secret Access Key | N/A                    | N/A                   |

## `CUBESTORE_MINIO_SERVER_ENDPOINT`

The MinIO server endpoint. Required when using MinIO.

| Possible Values        | Default in Development | Default in Production |
| ---------------------- | ---------------------- | --------------------- |
| A valid MinIO endpoint | N/A                    | N/A                   |

```dotenv
CUBESTORE_MINIO_SERVER_ENDPOINT=http://localhost:9000
```

## `CUBESTORE_NO_UPLOAD`

If `true`, prevents uploading serialized pre-aggregations to cloud storage.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `false`                | `false`               |

## `CUBESTORE_PORT`

The port for Cube Store to listen to connections on. Ignored when
`CUBESTORE_BIND_ADDR` is set.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid port number | `3306`                 | `3306`                |

## `CUBESTORE_QUERY_TIMEOUT`

The timeout for SQL queries in seconds.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A number in seconds | `120`                  | `120`                 |

## `CUBESTORE_REMOTE_DIR`

A path on the local filesystem to store metadata and datasets from all nodes as
if it were remote storage. Not required if using GCS/S3. Not recommended for
production usage

| Possible Values                                             | Default in Development | Default in Production |
| ----------------------------------------------------------- | ---------------------- | --------------------- |
| A valid path on the local filesystem with read/write access | N/A                    | N/A                   |

## `CUBESTORE_S3_BUCKET`

The name of a bucket in AWS S3. Required when using AWS S3.

| Possible Values                        | Default in Development | Default in Production |
| -------------------------------------- | ---------------------- | --------------------- |
| A valid bucket name in the AWS account | N/A                    | N/A                   |

## `CUBESTORE_S3_REGION`

| The region of a bucket in AWS S3. Required when using AWS S3.

| Possible Values                        | Default in Development | Default in Production |
| -------------------------------------- | ---------------------- | --------------------- |
| [A valid AWS region][aws-docs-regions] | N/A                    | N/A                   |

## `CUBESTORE_S3_SUB_PATH`

The path in a AWS S3 bucket to store pre-aggregations. Optional.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid path prefix | N/A                    | N/A                   |

## `CUBESTORE_SELECT_WORKERS`

The number of Cube Store sub-processes that handle `SELECT` queries.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid number  | `4`                    | `4`                   |

## `CUBESTORE_SERVER_NAME`

The full name and port number of the Cube Store node (either the router
or a worker). Must be unique for each instance in the Cube Store cluster.

Should be passed to the Cube Store router and to each Cube Store worker.

| Possible Values           | Default in Development | Default in Production |
| ------------------------- | ---------------------- | --------------------- |
| A valid address/port pair | `localhost`            | `localhost`           |

## `CUBESTORE_TELEMETRY`

If `true`, then sends telemetry to Cube.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `true`                 | `true`                |

## `CUBESTORE_WAL_SPLIT_THRESHOLD`

The maximum number of rows to keep in a single chunk of data right after
insertion.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| A valid number  | `262144`               | `262144`              |

## `CUBESTORE_WORKER_PORT`

The port for Cube Store workers to listen to connections on. When set, the node
will start as a Cube Store **worker** in the cluster

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid port number | N/A                    | N/A                   |

## `CUBESTORE_WORKERS`

A comma-separated list of address/port pairs of Cube Store workers.

Should be passed to the Cube Store router and to each Cube Store worker.

| Possible Values                              | Default in Development | Default in Production |
| -------------------------------------------- | ---------------------- | --------------------- |
| A comma-separated list of address/port pairs | N/A                    | N/A                   |

```dotenv
CUBESTORE_WORKERS=worker-1:3123,localhost:3124,123.124.125.128:3123
```

Used to implement stateless addressing within a Cube Store cluster.
By analyzing `CUBESTORE_WORKERS` and `CUBESTORE_SERVER_NAME`, each node
is able to determine its position within a Cube Store cluster.
This allows each worker to know which pre-aggregation partitions it owns
and how the load is distributed across all workers.

## `DEBUG_LOG`

If `true`, enables debug logging.

| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
| `true`, `false` | `false`                | `false`               |

## `PORT`

The port for a Cube deployment to listen to API connections on.

| Possible Values     | Default in Development | Default in Production |
| ------------------- | ---------------------- | --------------------- |
| A valid port number | `4000`                 | `4000`                |

[aws-athena]: https://aws.amazon.com/athena
[aws-athena-workgroup]:
  https://docs.aws.amazon.com/athena/latest/ug/workgroups-benefits.html
[aws-athena-catalog]:
  https://docs.aws.amazon.com/athena/latest/ug/understanding-tables-databases-and-the-data-catalog.html
[aws-docs-creds]:
  https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys
[aws-docs-regions]:
  https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions
[aws-docs-vpc-endpoints]:
  https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html
[bq-docs-regional-locations]:
  https://cloud.google.com/bigquery/docs/locations#regional-locations
[databricks-docs-dbfs]:
  https://docs.databricks.com/data/databricks-file-system.html#mount-object-storage-to-dbfs
[databricks-docs-pat]:
  https://docs.databricks.com/dev-tools/api/latest/authentication.html#token-management
[elastic-docs-api-keys]:
  https://www.elastic.co/guide/en/kibana/master/api-keys.html#create-api-key
[firebolt-docs-account-name]:
  https://docs.firebolt.io/managing-your-account/concepts-and-terminology.html#firebolt-account
[firebolt-docs-engine-name]:
  https://docs.firebolt.io/working-with-engines/understanding-engine-fundamentals.html#engine-name
[gcp-docs-creds-json]:
  https://cloud.google.com/iam/docs/creating-managing-service-account-keys
[gh-docs-pat]:
  https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
[gh-jsonwebtoken-algs]:
  https://github.com/auth0/node-jsonwebtoken#algorithms-supported
[ietf-jwk-ref]: https://tools.ietf.org/html/rfc7517#section-4
[ietf-jwt-ref-iss]: https://tools.ietf.org/html/rfc7519#section-4.1.1
[ietf-jwt-ref-sub]: https://tools.ietf.org/html/rfc7519#section-4.1.2
[ietf-jwt-ref-aud]: https://tools.ietf.org/html/rfc7519#section-4.1.3
[motherduck-docs-svc-token]:
  https://motherduck.com/docs/authenticating-to-motherduck/#authentication-using-a-service-token
[ref-config-db]: /product/configuration/data-sources
[ref-config-multiple-ds-decorating-env]:
  /product/configuration/advanced/multiple-data-sources#configuring-data-sources-with-environment-variables-decorated-environment-variables
[ref-config-sched-refresh-timer]:
  /product/configuration/reference/config#scheduled_refresh_timer
[ref-rest-scopes]: /product/apis-integrations/rest-api#configuration-api-scopes
[snowflake-docs-account-id]:
  https://docs.snowflake.com/en/user-guide/admin-account-identifier.html
[snowflake-docs-connection-options]:
  https://docs.snowflake.com/en/user-guide/nodejs-driver-use.html#additional-connection-options
[snowflake-docs-regions]:
  https://docs.snowflake.com/en/user-guide/intro-regions.html
[snowflake-docs-roles]:
  https://docs.snowflake.com/en/user-guide/security-access-control-overview.html#roles
[snowflake-docs-warehouse]:
  https://docs.snowflake.com/en/user-guide/warehouses.html
[wiki-tz-database]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
[ref-sql-api]: /product/apis-integrations/sql-api
[ref-sql-api-streaming]: /product/apis-integrations/sql-api#streaming
[ref-row-limit]: /product/apis-integrations/queries#row-limit
[mysql-server-tz-support]: https://dev.mysql.com/doc/refman/8.4/en/time-zone-support.html
[ref-schema-ref-preagg-allownonstrict]: /product/data-modeling/reference/pre-aggregations#allow_non_strict_date_range_match
[link-tesseract]: https://cube.dev/blog/introducing-next-generation-data-modeling-engine
[ref-multi-stage-calculations]: /product/data-modeling/concepts/multi-stage-calculations
[ref-folders]: /product/data-modeling/reference/view#folders
[ref-dataviz-tools]: /product/configuration/visualization-tools
[ref-context-to-app-id]: /product/configuration/reference/config#context_to_app_id
[ref-environments]: /product/workspace/environments
[ref-databricks-m2m-oauth]: https://docs.databricks.com/aws/en/dev-tools/auth/oauth-m2m
[ref-mdx-api]: /product/apis-integrations/mdx-api
[ref-mdx-api-locale]: /product/apis-integrations/mdx-api#measure-format
[ref-time-dimensions]: /product/data-modeling/reference/dimensions#time
[ref-time-zone]: /product/apis-integrations/queries#time-zone
[link-tzdb]: https://en.wikipedia.org/wiki/Tz_database
